评论管理、用户私信功能点分析
概述
会员管理模块中的"用户评论"和"用户私信"是两个重要的业务功能。本节分析这两个功能的需求差异、业务逻辑和功能点设计,为后续的详情页面开发做准备。
业务场景对比
评论 vs 私信的区别
| 维度 | 用户评论 | 用户私信 |
|---|---|---|
| 通信模式 | 一对多(一个主题,多人讨论) | 一对一(点对点通信) |
| 可见范围 | 公开,所有用户可见 | 私密,仅发送方和接收方可见 |
| 内容关联 | 针对特定内容(课程、文章) | 不关联具体内容 |
| 交互形式 | 论坛式讨论 | 类聊天对话 |
| 状态标记 | 已读/未读 | 已读/未读 + new 标记 |
评论的两种场景
评论场景一:课程评价
├── 用户对课程的整体评价
├── 展示在课程详情页
└── 与课程内容关联
评论场景二:用户提出的问题
├── 用户在课程中提出的问题
├── 可筛选展示
└── 与具体章节/课时关联
text
私信的交互模式
私信通信流程:
┌──────────────────────────────────────────┐
│ 用户 A ──── 发送消息 ────→ 用户 B │
│ 用户 A ←── 回复消息 ───── 用户 B │
│ │
│ 特点: │
│ • new 状态标记(新消息提示) │
│ • 点对点,非好友也可查看消息 │
│ • 可扩展好友机制和防骚扰策略 │
└──────────────────────────────────────────┘
text
功能点分析
用户评论管理
会员管理 → 用户评论
├── 列表展示
│ ├── 筛选条件:用户名、课程、评论类型、时间范围
│ ├── 评论内容摘要
│ ├── 评论时间
│ ├── 评论所属课程/章节
│ └── 评论状态(已发布/已隐藏/待审核)
├── 评论详情
│ ├── 完整评论内容
│ ├── 评论者信息
│ ├── 所属课程/章节信息
│ ├── 回复列表
│ └── 操作(隐藏/删除/回复)
└── 批量操作
├── 批量隐藏
└── 批量删除
text
用户私信管理
会员管理 → 用户私信
├── 私信列表
│ ├── 筛选条件:发送方、接收方、时间范围
│ ├── 最新消息摘要
│ ├── new 状态标记(未读消息)
│ ├── 发送方和接收方信息
│ └── 消息时间
├── 私信详情(类聊天界面)
│ ├── 消息历史记录
│ ├── 时间线展示
│ ├── 消息状态(已读/未读)
│ └── 操作(发送回复/标记已读)
└── 私信策略配置
├── 好友限制(是否需要互为好友才能发私信)
├── 防骚扰机制
└── 用户黑名单
text
页面结构设计
评论列表页(已有模式复用)
<!-- 与前面会员管理等页面结构一致 -->
<template>
<div class="comment-management">
<!-- 搜索筛选区域 -->
<div class="filter-bar">
<el-input v-model="filters.keyword" placeholder="搜索评论内容" />
<el-select v-model="filters.type" placeholder="评论类型">
<el-option label="课程评价" value="review" />
<el-option label="问题反馈" value="question" />
</el-select>
<el-date-picker v-model="filters.dateRange" type="daterange" />
</div>
<!-- 动态表格(复用已有的 Table 组件) -->
<DynamicTable :columns="columns" :data="comments" />
<!-- 分页 -->
<Pagination v-model:page="page" v-model:pageSize="pageSize" />
</div>
</template>
vue
评论详情页(类论坛呈现)
评论详情页布局:
┌────────────────────────────────────┐
│ 评论详情 │
├────────────────────────────────────┤
│ 评论者头像 用户名 评论时间 │
│ ──────────────────────────────── │
│ 评论内容: │
│ 这是一门非常好的课程... │
│ │
│ 回复列表(3条): │
│ ├── 回复1: 作者回复... │
│ ├── 回复2: 其他用户... │
│ └── 回复3: ... │
│ │
│ [操作] 隐藏 | 删除 | 回复 │
└────────────────────────────────────┘
text
私信扩展设计
好友机制设计
// 私信权限控制策略
type MessagePermission = 'open' | 'friends-only' | 'reply-only'
interface PrivacySettings {
messagePermission: MessagePermission
blockedUsers: string[]
allowStrangerMessage: boolean
}
// 权限判断逻辑
function canSendMessage(
sender: User,
receiver: User,
settings: PrivacySettings
): boolean {
if (settings.blockedUsers.includes(sender.id)) return false
switch (settings.messagePermission) {
case 'open':
return true
case 'friends-only':
return isFriend(sender.id, receiver.id)
case 'reply-only':
return hasPreviousConversation(sender.id, receiver.id)
}
}
ts
防骚扰机制
防骚扰策略:
├── 消息频率限制
│ ├── 每分钟最多 N 条消息
│ └── 每天对同一用户最多 N 条消息
├── 黑名单机制
│ ├── 用户可在设置中拉黑其他用户
│ └── 被拉黑用户无法发送私信
├── 举报机制
│ ├── 用户可举报骚扰消息
│ └── 管理员审核后可封禁用户
└── 新消息提醒
├── new 状态标记
├── 未读消息计数
└── 可在系统设置中配置提醒方式
text
与已有页面的复用关系
页面复用分析:
├── 用户评论列表 → 复用动态表格 + 动态表单组件
├── 用户私信列表 → 复用动态表格 + 动态表单组件
├── 评论详情页 → 新开发(类论坛布局)
└── 私信详情页 → 新开发(类聊天界面)
已有组件可复用的部分:
├── DynamicTable → 列表展示
├── DynamicForm → 搜索筛选
├── Pagination → 分页控制
└── CollapseTransition → 折叠展开效果
text
实践要点
- 用户评论和用户私信虽然都是消息类功能,但通信模式(一对多 vs 一对一)和可见范围完全不同
- 列表页面可以复用已有的动态表格和动态表单组件,无需重新开发
- 评论详情采用类论坛布局,私信详情采用类聊天界面,这两个页面需要新开发
- 私信功能可扩展好友机制、防骚扰策略、黑名单等社交特性
- 权限控制策略建议设计为可配置的(开放/仅好友/仅回复后),方便运营调整
new状态标记是私信功能的核心交互,需要实时更新未读消息计数
↑